package utils;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import common.Constant;
import secondFragment.bean.VolunteerListBean;


/**
 * Created by Administrator on 2017/6/15.
 * 文件操作
 */

public class FileUtils {
    public static FileUtils instance;

    public static FileUtils getInstance(){
        if(instance == null){
            instance = new FileUtils();
        }
        return instance;
    }


    //将志愿者按照学校名保存到本地
    public void saveVolunteers(VolunteerListBean volunteerListBean, String schoolName) throws IOException, ClassNotFoundException {
        String path = Constant.VOLUNTEERS_DIR + File.separator + schoolName + ".data";//设置路径
        FileOutputStream fileOutputStream;//打开文件输出流
        ObjectOutputStream objectOutputStream;//打开对象输出流
        File file = new File(path);//新建文件
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        if (file.exists()) {
            file.delete();
        }
        file.createNewFile();

        fileOutputStream = new FileOutputStream(file.toString());//将新建的文件写入文件输出流
        objectOutputStream = new ObjectOutputStream(fileOutputStream);//向对象输出流写入文件输出流
        objectOutputStream.writeObject(volunteerListBean);//将序列化后的对象写入对象输出流
        objectOutputStream.close();//关闭对象输出流
        fileOutputStream.close();//关闭文件输出流
    }


    //读取志愿者，根据学校名
    public VolunteerListBean getVolunteers(String schoolName) throws IOException, ClassNotFoundException {
        String path = Constant.VOLUNTEERS_DIR + File.separator + schoolName + ".data";//设置路径
        VolunteerListBean volunteerListBean;//声明对象
        File file = new File(path);//新建文件
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        if (file.exists()) {
            //如果文件存在
            FileInputStream fileInputStream;//打开文件输入流
            ObjectInputStream objectInputStream;//打开对象输入流
            fileInputStream = new FileInputStream(file.toString());//将新建的文件写入文件输入流
            objectInputStream = new ObjectInputStream(fileInputStream);//将文件输入流写入对象输入流
            volunteerListBean = (VolunteerListBean) objectInputStream.readObject();//获取对象输入流的对象
            objectInputStream.close();//关闭对象输入流
            fileInputStream.close();//关闭文件输入流
            return volunteerListBean;
        } else {
            return null;
        }
    }


    //删除文件夹
    public void deleteDir(File file){
            if (file.isFile()) {
                //如果是文件的话
                file.delete();
                return;
            }
            if (file.isDirectory()) {
                //如果是文件夹的话
                File[] childFile = file.listFiles();//获取这个文件夹里面的所有文件(包括文件夹)
                if (childFile == null || childFile.length == 0) {
                   //如果这个文件夹没有子文件或者文件夹的话，就删除掉这个文件(文件夹)
                    file.delete();
                    return;
                }
                for (File f : childFile) {
                    //递归这个方法
                    deleteDir(f);
                }
                file.delete();//这个方法最后就是删除掉目标文件
            }
    }

}
